package hottargui.framework;

import hottargui.view.GuiToolFactory;

/**
 * Abstract factory pattern returns all the states and strategy objects used in
 * the Targui game.
 */
public interface TarguiFactory {

	public TarguiState getNewGameState(Game context);

	public TarguiState getMoveState(Game context);

	public TarguiState getAttackState(Game context, Position base, Position target);

	public TarguiState getDefendState(Game context, Position base, Position target);

	public TarguiState getBuyState(Game context);

	public TarguiState getEndTurnState(Game context);

	public TarguiState getEndRoundState(Game context);

	public TarguiState getEndGameState(Game context);

	public AttackStrategy getAttackStrategy();

	public BuyStrategy getBuyStrategy();

	public WinnerStrategy getWinnerStrategy();

	public BoardStrategy getBoardStrategy();

	public TurnSequenceStrategy getTurnSequenceStrategy();

	public DiceRollStrategy getDiceRollStrategy();

	public GameObjectServer getGameObjectServer();

	public GameRoundsStrategy getGameRoundsStrategy();

	public GuiToolFactory getGuiToolFactory();
}
